package com.such.kit.database.bean;

import java.sql.DatabaseMetaData;
import com.such.kit.database.support.JdbcResultSetMapping;
import com.such.kit.datacast.CastCommons;

/**
 * @author SUCH
 * <pre>
 * 数据库列元数据
 * 
 * [参考 {@link DatabaseMetaData#getColumns(String, String, String, String)}]
 * </pre>
 */
public class DatabaseColumn {

	/** catalog：（TABLE_CAT）表所在编目 */
	@JdbcResultSetMapping("TABLE_CAT")
	private String catalog;
	/** schema：（TABLE_SCHEM）表所在模式 */
	@JdbcResultSetMapping("TABLE_SCHEM")
	private String schema;
	/** tableName：（TABLE_NAME）表名 */
	@JdbcResultSetMapping("TABLE_NAME")
	private String tableName;
	/** columnName：（COLUMN_NAME）列名 */
	@JdbcResultSetMapping("COLUMN_NAME")
	private String columnName;
	/** dataType：（DATA_TYPE）数据类型编号 */
	@JdbcResultSetMapping("DATA_TYPE")
	private String dataType;
	/** dataTypeName：（TYPE_NAME）数据类型名称 */
	@JdbcResultSetMapping("TYPE_NAME")
	private String dataTypeName;
	/** columnSize：（COLUMN_SIZE）列总长度 */
	@JdbcResultSetMapping("COLUMN_SIZE")
	private String columnSize;
	/** decimalDigits：（DECIMAL_DIGITS）列小数位长度 */
	@JdbcResultSetMapping("DECIMAL_DIGITS")
	private String decimalDigits;
	/** numPrecRadix：（NUM_PREC_RADIX）Radix (typically either 10 or 2) */
	@JdbcResultSetMapping("NUM_PREC_RADIX")
	private String numPrecRadix;
	/** nullable：（NULLABLE）[0（columnNoNulls）该列不允许为空 | 1（columnNullable）该列允许为空 | 2（columnNullableUnknown）不确定该列是否为空] */
	@JdbcResultSetMapping("NULLABLE")
	private String nullable;
	/** isNullable：（IS_NULLABLE）[NO 该列不允许为空 | YES 该列允许为空 | "" 不确定该列是否为空]，作用与 nullable 类似 */
	@JdbcResultSetMapping("IS_NULLABLE")
	private String isNullable;
	/** comment：（REMARKS）列描述 */
	@JdbcResultSetMapping("REMARKS")
	private String comment;
	/** defaultValue：（COLUMN_DEF）默认值 */
	@JdbcResultSetMapping("COLUMN_DEF")
	private String defaultValue;
	/** charOctetLength：（CHAR_OCTET_LENGTH）当列为 char 类型，计算其最大字节数 */
	@JdbcResultSetMapping("CHAR_OCTET_LENGTH")
	private String charOctetLength;
	/** ordinalPosition：（ORDINAL_POSITION）表中列的索引，下标从 1 开始 */
	@JdbcResultSetMapping("ORDINAL_POSITION")
	private String ordinalPosition;
	/** scopeCatlog：（SCOPE_CATLOG）catalog of table that is the scope of a reference attribute */
	@JdbcResultSetMapping("SCOPE_CATLOG")
	private String scopeCatlog;
	/** scopeSchema：（SCOPE_SCHEMA）schema of table that is the scope of a reference attribute */
	@JdbcResultSetMapping("SCOPE_SCHEMA")
	private String scopeSchema;
	/** scopeTable：（SCOPE_TABLE）table name that this the scope of a reference attribure */
	@JdbcResultSetMapping("SCOPE_TABLE")
	private String scopeTable;
	/** scopeDataType：（SOURCE_DATA_TYPE）source type of a distinct type or user-generated Ref type, SQL type from java.sql.Types */
	@JdbcResultSetMapping("SOURCE_DATA_TYPE")
	private String scopeDataType;
	/** isAutoincrement：（IS_AUTOINCREMENT）[NO 该列不自增 | YES 该列自增 | "" 不确定该列是否自增]，是否为自增列 */
	@JdbcResultSetMapping("IS_AUTOINCREMENT")
	private String isAutoincrement;

	/** [参考 {@link #catalog}] */
	public String getCatalog() {
		return this.catalog;
	}

	/** [参考 {@link #catalog}] */
	public void setCatalog(String catalog) {
		this.catalog = catalog;
	}

	/** [参考 {@link #schema}] */
	public String getSchema() {
		return this.schema;
	}

	/** [参考 {@link #schema}] */
	public void setSchema(String schema) {
		this.schema = schema;
	}

	/** [参考 {@link #tableName}] */
	public String getTableName() {
		return this.tableName;
	}

	/** [参考 {@link #tableName}] */
	public void setTableName(String tableName) {
		this.tableName = tableName;
	}

	/** [参考 {@link #columnName}] */
	public String getColumnName() {
		return this.columnName;
	}

	/** [参考 {@link #columnName}] */
	public void setColumnName(String columnName) {
		this.columnName = columnName;
	}

	/** [参考 {@link #dataType}] */
	public String getDataType() {
		return this.dataType;
	}

	/** [参考 {@link #dataType}] */
	public void setDataType(String dataType) {
		this.dataType = dataType;
	}

	/**
	 * <pre>
	 * [参考 {@link #dataType}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setDataType(double dataType) {
		this.dataType = CastCommons.numberToString(dataType);
	}

	/**
	 * <pre>
	 * [参考 {@link #dataType}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setDataType(long dataType) {
		this.dataType = CastCommons.numberToString(dataType);
	}

	/**
	 * <pre>
	 * [参考 {@link #dataType}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setDataType(int dataType) {
		this.dataType = CastCommons.numberToString(dataType);
	}

	/**
	 * <pre>
	 * [参考 {@link #dataType}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setDataType(short dataType) {
		this.dataType = CastCommons.numberToString(dataType);
	}

	/** [参考 {@link #dataTypeName}] */
	public String getDataTypeName() {
		return this.dataTypeName;
	}

	/** [参考 {@link #dataTypeName}] */
	public void setDataTypeName(String dataTypeName) {
		this.dataTypeName = dataTypeName;
	}

	/** [参考 {@link #columnSize}] */
	public String getColumnSize() {
		return this.columnSize;
	}

	/** [参考 {@link #columnSize}] */
	public void setColumnSize(String columnSize) {
		this.columnSize = columnSize;
	}

	/**
	 * <pre>
	 * [参考 {@link #columnSize}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setColumnSize(double columnSize) {
		this.columnSize = CastCommons.numberToString(columnSize);
	}

	/**
	 * <pre>
	 * [参考 {@link #columnSize}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setColumnSize(long columnSize) {
		this.columnSize = CastCommons.numberToString(columnSize);
	}

	/**
	 * <pre>
	 * [参考 {@link #columnSize}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setColumnSize(int columnSize) {
		this.columnSize = CastCommons.numberToString(columnSize);
	}

	/**
	 * <pre>
	 * [参考 {@link #columnSize}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setColumnSize(short columnSize) {
		this.columnSize = CastCommons.numberToString(columnSize);
	}

	/** [参考 {@link #decimalDigits}] */
	public String getDecimalDigits() {
		return this.decimalDigits;
	}

	/** [参考 {@link #decimalDigits}] */
	public void setDecimalDigits(String decimalDigits) {
		this.decimalDigits = decimalDigits;
	}

	/**
	 * <pre>
	 * [参考 {@link #decimalDigits}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setDecimalDigits(double decimalDigits) {
		this.decimalDigits = CastCommons.numberToString(decimalDigits);
	}

	/**
	 * <pre>
	 * [参考 {@link #decimalDigits}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setDecimalDigits(long decimalDigits) {
		this.decimalDigits = CastCommons.numberToString(decimalDigits);
	}

	/**
	 * <pre>
	 * [参考 {@link #decimalDigits}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setDecimalDigits(int decimalDigits) {
		this.decimalDigits = CastCommons.numberToString(decimalDigits);
	}

	/**
	 * <pre>
	 * [参考 {@link #decimalDigits}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setDecimalDigits(short decimalDigits) {
		this.decimalDigits = CastCommons.numberToString(decimalDigits);
	}

	/** [参考 {@link #numPrecRadix}] */
	public String getNumPrecRadix() {
		return this.numPrecRadix;
	}

	/** [参考 {@link #numPrecRadix}] */
	public void setNumPrecRadix(String numPrecRadix) {
		this.numPrecRadix = numPrecRadix;
	}

	/**
	 * <pre>
	 * [参考 {@link #numPrecRadix}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setNumPrecRadix(double numPrecRadix) {
		this.numPrecRadix = CastCommons.numberToString(numPrecRadix);
	}

	/**
	 * <pre>
	 * [参考 {@link #numPrecRadix}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setNumPrecRadix(long numPrecRadix) {
		this.numPrecRadix = CastCommons.numberToString(numPrecRadix);
	}

	/**
	 * <pre>
	 * [参考 {@link #numPrecRadix}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setNumPrecRadix(int numPrecRadix) {
		this.numPrecRadix = CastCommons.numberToString(numPrecRadix);
	}

	/**
	 * <pre>
	 * [参考 {@link #numPrecRadix}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setNumPrecRadix(short numPrecRadix) {
		this.numPrecRadix = CastCommons.numberToString(numPrecRadix);
	}

	/** [参考 {@link #nullable}] */
	public String getNullable() {
		return this.nullable;
	}

	/** [参考 {@link #nullable}] */
	public void setNullable(String nullable) {
		this.nullable = nullable;
	}

	/**
	 * <pre>
	 * [参考 {@link #nullable}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setNullable(double nullable) {
		this.nullable = CastCommons.numberToString(nullable);
	}

	/**
	 * <pre>
	 * [参考 {@link #nullable}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setNullable(long nullable) {
		this.nullable = CastCommons.numberToString(nullable);
	}

	/**
	 * <pre>
	 * [参考 {@link #nullable}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setNullable(int nullable) {
		this.nullable = CastCommons.numberToString(nullable);
	}

	/**
	 * <pre>
	 * [参考 {@link #nullable}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setNullable(short nullable) {
		this.nullable = CastCommons.numberToString(nullable);
	}

	/** [参考 {@link #isNullable}] */
	public String getIsNullable() {
		return this.isNullable;
	}

	
	/** [参考 {@link #isNullable}] */
	public void setIsNullable(String isNullable) {
		this.isNullable = isNullable;
	}

	
	/** [参考 {@link #comment}] */
	public String getComment() {
		return this.comment;
	}

	
	/** [参考 {@link #comment}] */
	public void setComment(String comment) {
		this.comment = comment;
	}

	
	/** [参考 {@link #defaultValue}] */
	public String getDefaultValue() {
		return this.defaultValue;
	}

	
	/** [参考 {@link #defaultValue}] */
	public void setDefaultValue(String defaultValue) {
		this.defaultValue = defaultValue;
	}

	
	/** [参考 {@link #charOctetLength}] */
	public String getCharOctetLength() {
		return this.charOctetLength;
	}

	
	/** [参考 {@link #charOctetLength}] */
	public void setCharOctetLength(String charOctetLength) {
		this.charOctetLength = charOctetLength;
	}

	/**
	 * <pre>
	 * [参考 {@link #charOctetLength}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setCharOctetLength(double charOctetLength) {
		this.charOctetLength = CastCommons.numberToString(charOctetLength);
	}

	/**
	 * <pre>
	 * [参考 {@link #charOctetLength}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setCharOctetLength(long charOctetLength) {
		this.charOctetLength = CastCommons.numberToString(charOctetLength);
	}

	/**
	 * <pre>
	 * [参考 {@link #charOctetLength}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setCharOctetLength(int charOctetLength) {
		this.charOctetLength = CastCommons.numberToString(charOctetLength);
	}

	/**
	 * <pre>
	 * [参考 {@link #charOctetLength}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setCharOctetLength(short charOctetLength) {
		this.charOctetLength = CastCommons.numberToString(charOctetLength);
	}

	/** [参考 {@link #ordinalPosition}] */
	public String getOrdinalPosition() {
		return this.ordinalPosition;
	}

	/** [参考 {@link #ordinalPosition}] */
	public void setOrdinalPosition(String ordinalPosition) {
		this.ordinalPosition = ordinalPosition;
	}

	/**
	 * <pre>
	 * [参考 {@link #ordinalPosition}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setOrdinalPosition(double ordinalPosition) {
		this.ordinalPosition = CastCommons.numberToString(ordinalPosition);
	}

	/**
	 * <pre>
	 * [参考 {@link #ordinalPosition}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setOrdinalPosition(long ordinalPosition) {
		this.ordinalPosition = CastCommons.numberToString(ordinalPosition);
	}

	/**
	 * <pre>
	 * [参考 {@link #ordinalPosition}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setOrdinalPosition(int ordinalPosition) {
		this.ordinalPosition = CastCommons.numberToString(ordinalPosition);
	}

	/**
	 * <pre>
	 * [参考 {@link #ordinalPosition}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setOrdinalPosition(short ordinalPosition) {
		this.ordinalPosition = CastCommons.numberToString(ordinalPosition);
	}

	/** [参考 {@link #scopeCatlog}] */
	public String getScopeCatlog() {
		return this.scopeCatlog;
	}

	/** [参考 {@link #scopeCatlog}] */
	public void setScopeCatlog(String scopeCatlog) {
		this.scopeCatlog = scopeCatlog;
	}

	/** [参考 {@link #scopeSchema}] */
	public String getScopeSchema() {
		return this.scopeSchema;
	}

	/** [参考 {@link #scopeSchema}] */
	public void setScopeSchema(String scopeSchema) {
		this.scopeSchema = scopeSchema;
	}

	/** [参考 {@link #scopeTable}] */
	public String getScopeTable() {
		return this.scopeTable;
	}

	/** [参考 {@link #scopeTable}] */
	public void setScopeTable(String scopeTable) {
		this.scopeTable = scopeTable;
	}

	/** [参考 {@link #scopeDataType}] */
	public String getScopeDataType() {
		return this.scopeDataType;
	}

	/** [参考 {@link #scopeDataType}] */
	public void setScopeDataType(String scopeDataType) {
		this.scopeDataType = scopeDataType;
	}

	/**
	 * <pre>
	 * [参考 {@link #scopeDataType}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setScopeDataType(double scopeDataType) {
		this.scopeDataType = CastCommons.numberToString(scopeDataType);
	}

	/**
	 * <pre>
	 * [参考 {@link #scopeDataType}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setScopeDataType(long scopeDataType) {
		this.scopeDataType = CastCommons.numberToString(scopeDataType);
	}

	/**
	 * <pre>
	 * [参考 {@link #scopeDataType}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setScopeDataType(int scopeDataType) {
		this.scopeDataType = CastCommons.numberToString(scopeDataType);
	}

	/**
	 * <pre>
	 * [参考 {@link #scopeDataType}]
	 * 
	 * 兼容不同数据库返回值
	 * </pre>
	 * @param dataType
	 */
	public void setScopeDataType(short scopeDataType) {
		this.scopeDataType = CastCommons.numberToString(scopeDataType);
	}

	/** [参考 {@link #isAutoincrement}] */
	public String getIsAutoincrement() {
		return this.isAutoincrement;
	}

	/** [参考 {@link #isAutoincrement}] */
	public void setIsAutoincrement(String isAutoincrement) {
		this.isAutoincrement = isAutoincrement;
	}

}
